package com.xnj.tyrcathdemo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

// try-catch-finally
public class FileCopyDemoTest1 {

    public static void main(String[] args)  {
        FileInputStream is = null;
        FileOutputStream os = null;
        try {
            // 1. 创建文件字节输入流与源文件连通：读取源文件
            is = new FileInputStream("src/疯狂星期四.png");
            // 2. 创建文件字节输出流与目标文件连通：写入目标文件
            os = new FileOutputStream("src/疯狂星期四copy.png");
            // 3. 创建一个字节数组,负责转移字节数据
            byte[] buffer = new byte[1024]; // 1KB=>1024字节
            // 4. 从字节输入流中读取字节数据，写出到字节输出流中
            int len; // len表示每次读取的字节数
            while ((len = is.read(buffer)) != -1){
                // 写入目标文件
                // 输入流读多少输出流写多少
                os.write(buffer, 0, len);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            // 5.关闭流,从里往外关，先创建的后关
            try {
                if(os!=null) os.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            try {
                if(is != null) is.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }




    }
}
